home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc988.txt < prev    next >
Text File  |  1994-08-01  |  44KB  |  1,141 lines

  1.  
  2.  
  3. Network Working Group                                      S. E. Deering
  4. Request for Comments: 988                            Stanford University
  5.                                                                July 1986
  6.  
  7.                   Host Extensions for IP Multicasting
  8.  
  9.  
  10. 1.  STATUS OF THIS MEMO
  11.  
  12.    This memo specifies the extensions required of a host implementation
  13.    of the Internet Protocol (IP) to support internetwork multicasting.
  14.    This specification supersedes that given in RFC-966, and constitutes
  15.    a proposed protocol standard for IP multicasting in the
  16.    ARPA-Internet.  The reader is directed to RFC-966 for a discussion of
  17.    the motivation and rationale behind the multicasting extension
  18.    specified here.  Distribution of this memo is unlimited.
  19.  
  20. 2.  INTRODUCTION
  21.  
  22.    IP multicasting is defined as the transmission of an IP datagram to a
  23.    "host group", a set of zero or more hosts identified by a single IP
  24.    destination address.  A multicast datagram is delivered to all
  25.    members of its destination host group with the same "best-efforts"
  26.    reliability as regular unicast IP datagrams, i.e. the datagram is not
  27.    guaranteed to arrive at all members of the destination group or in
  28.    the same order relative to other datagrams.
  29.  
  30.    The membership of a host group is dynamic; that is, hosts may join
  31.    and leave groups at any time.  There is no restriction on the
  32.    location or number of members in a host group, but membership in a
  33.    group may be restricted to only those hosts possessing a private
  34.    access key.  A host may be a member of more than one group at a time.
  35.    A host need not be a member of a group to send datagrams to it.
  36.  
  37.    A host group may be permanent or transient.  A permanent group has a
  38.    well-known, administratively assigned IP address.  It is the address,
  39.    not the membership of the group, that is permanent; at any time a
  40.    permanent group may have any number of members, even zero.  A
  41.    transient group, on the other hand, is assigned an address
  42.    dynamically when the group is created, at the request of a host.  A
  43.    transient group ceases to exist, and its address becomes eligible for
  44.    reassignment, when its membership drops to zero.
  45.  
  46.    The creation of transient groups and the maintenance of group
  47.    membership information is the responsibility of "multicast agents",
  48.    entities that reside in internet gateways or other special-purpose
  49.    hosts.  There is at least one multicast agent directly attached to
  50.    every IP network or subnetwork that supports IP multicasting.  A host
  51.    requests the creation of new groups, and joins or leaves existing
  52.    groups, by exchanging messages with a neighboring agent.
  53.  
  54.  
  55.  
  56. Deering                                                         [Page 1]
  57.  
  58.  
  59.  
  60. RFC 988                                                        July 1986
  61. Host Extensions for IP Multicasting
  62.  
  63.  
  64.    Multicast agents are also responsible for internetwork delivery of
  65.    multicast IP datagrams.  When sending a multicast IP datagram, a host
  66.    transmits it to a local network multicast address which identifies
  67.    all neighboring members of the destination host group.  If the group
  68.    has members on other networks, a multicast agent becomes an
  69.    additional recipient of the local multicast and relays the datagram
  70.    to agents on each of those other networks, via the internet gateway
  71.    system.  Finally, the agents on the other networks each transmit the
  72.    datagram as a local multicast to their own neighboring members of the
  73.    destination group.
  74.  
  75.    This memo specifies the extensions required of a host IP
  76.    implementation to support IP multicasting, where a "host" is any
  77.    internet host or gateway other than those serving as multicast
  78.    agents.  The algorithms and protocols used within and between
  79.    multicast agents are transparent to non-agent hosts and will be
  80.    specified in a separate document.  This memo also does not specify
  81.    how local network multicasting is accomplished for all types of
  82.    network, although it does specify the required service interface to
  83.    an arbitrary local network and gives an Ethernet specification as an
  84.    example.  Specifications for other types of network will be the
  85.    subject of future memos.
  86.  
  87. 3.  LEVELS OF CONFORMANCE
  88.  
  89.    There are three levels of conformance to this specification:
  90.  
  91.    Level 0: no support for IP multicasting.
  92.  
  93.       There is, at this time, no requirement that all IP implementations
  94.       support IP multicasting.  Level 0 hosts will, in general, be
  95.       unaffected by multicast activity.  The only exception arises on
  96.       some types of local network, where the presence of level 1 or 2
  97.       hosts may cause misdelivery of multicast IP datagrams to level 0
  98.       hosts.  Such datagrams can easily be identified by the presence of
  99.       a class D IP address in their destination address field; they
  100.       should be quietly discarded by hosts that do not support IP
  101.       multicasting.  Class D addresses are defined in section 4 of this
  102.       memo.
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. Deering                                                         [Page 2]
  114.  
  115.  
  116.  
  117. RFC 988                                                        July 1986
  118. Host Extensions for IP Multicasting
  119.  
  120.  
  121.    Level 1: support for sending but not receiving multicast IP
  122.    datagrams.
  123.  
  124.       Level 1 allows a host to partake of some multicast-based services,
  125.       such as resource location or status reporting, but it does not
  126.       allow a host to create or join any host groups.  An IP
  127.       implementation may be upgraded from level 0 to level 1 very easily
  128.       and with little new code.  Only sections 4, 5, and 6 of this memo
  129.       are applicable to level 1 implementations.
  130.  
  131.    Level 2: full support for IP multicasting.
  132.  
  133.       Level 2 allows a host to create, join and leave host groups, as
  134.       well as send IP datagrams to host groups.  It requires
  135.       implementation of the Internet Group Management Protocol (IGMP)
  136.       and extension of the IP and local network service interfaces
  137.       within the host.  All of the following sections of this memo are
  138.       applicable to level 2 implementations.
  139.  
  140. 4.  HOST GROUP ADDRESSES
  141.  
  142.    Host groups are identified by class D IP addresses, i.e. those with
  143.    "1110" as their high-order four bits.  The remaining 28 bits are
  144.    unstructured as far as hosts are concerned.  The addresses of
  145.    well-known, permanent groups are to be published in "Assigned
  146.    Numbers". Class E IP addresses, i.e. those with "1111" as their
  147.    high-order four bits, are reserved for future addressing modes.
  148.  
  149.    Appendix II contains some background discussion of several issues
  150.    related to host group addresses.
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Deering                                                         [Page 3]
  171.  
  172.  
  173.  
  174. RFC 988                                                        July 1986
  175. Host Extensions for IP Multicasting
  176.  
  177.  
  178. 5.  MODEL OF A HOST IP IMPLEMENTATION
  179.  
  180.    The multicast extensions to a host IP implementation are specified in
  181.    terms of the layered model illustrated below.  In this model, ICMP
  182.    and (for level 2 hosts) IGMP are considered to be implemented within
  183.    the IP module, and the mapping of IP addresses to local network
  184.    addresses is considered to be the responsibility of local network
  185.    modules.  This model is for expository purposes only, and should not
  186.    be construed as constraining an actual implementation.
  187.  
  188.       |                                                          |    
  189.       |              Upper-Layer Protocol Modules                |    
  190.       |__________________________________________________________|    
  191.                                     
  192.    --------------------- IP Service Interface ----------------------- 
  193.        __________________________________________________________     
  194.       |                            |              |              |    
  195.       |                            |     ICMP     |     IGMP     |    
  196.       |             IP             |______________|______________|    
  197.       |           Module                                         |    
  198.       |                                                          |    
  199.       |__________________________________________________________|    
  200.                                     
  201.    ---------------- Local Network Service Interface ----------------- 
  202.        __________________________________________________________     
  203.       |                            |                             |    
  204.       |           Local            | IP-to-local address mapping |    
  205.       |          Network           |         (e.g. ARP)          |    
  206.       |          Modules           |_____________________________|    
  207.       |      (e.g. Ethernet)                                     |    
  208.       |                                                          |    
  209.  
  210.    To support level 2 IP multicasting, a host IP implementation must
  211.    provide three new services:  (1) sending multicast IP datagrams, (2)
  212.    receiving multicast IP datagrams, and (3) managing group membership.
  213.    Only the first service need be provided in level 1 hosts.  Each of
  214.    these services is described in a separate section, below.  For each
  215.    service, extensions are specified for the IP service interface, the
  216.    IP module, the local network service interface, and an Ethernet local
  217.    network module.  Extensions to local network modules other than
  218.    Ethernet are mentioned briefly, but are not specified in detail.
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227. Deering                                                         [Page 4]
  228.  
  229.  
  230.  
  231. RFC 988                                                        July 1986
  232. Host Extensions for IP Multicasting
  233.  
  234.  
  235. 6.  SENDING MULTICAST IP DATAGRAMS
  236.  
  237.    6.1. Extensions to the IP Service Interface
  238.  
  239.       No change to the IP service interface is required to support the
  240.       sending of multicast IP datagrams.  An upper-layer protocol module
  241.       merely specifies an IP host group destination, rather than an
  242.       individual IP destination, when it invokes the existing "Send IP"
  243.       operation.
  244.  
  245.    6.2. Extensions to the IP Module
  246.  
  247.       To support the sending of multicast IP datagrams, the IP module
  248.       must be extended to recognize IP host group addresses when routing
  249.       outgoing datagrams.  Most IP implementations include the following
  250.       logic:
  251.  
  252.          if IP-destination is on the same local network,
  253.             send datagram locally to IP-destination
  254.          else
  255.             send datagram locally to GatewayTo(IP-destination)
  256.  
  257.       To allow multicast transmissions, the routing logic must be
  258.       changed to:
  259.  
  260.          if IP-destination is on the same local network
  261.          or IP-destination is a host group,
  262.             send datagram locally to IP-destination
  263.          else
  264.             send datagram locally to GatewayTo(IP-destination)
  265.  
  266.       If the sending host is itself a member of the destination group, a
  267.       copy of the outgoing datagram must be looped-back for local
  268.       delivery if and only if loopback was requested when the host
  269.       joined the group (see section 8.1).  (This issue does not arise in
  270.       level 1 implementations.)
  271.  
  272.       On hosts attached to more than one network, each multicast IP
  273.       datagram must be transmitted via one network interface only,
  274.       leaving it to the multicast agents to effect delivery to any other
  275.       required networks.
  276.  
  277.       A host group address should not be placed in the source address
  278.       field of an outgoing IP datagram.  A host group address may be
  279.       used in a source routing option as the last element only.
  280.  
  281.       It should be noted that a small IP time-to-live (TTL) value can
  282.  
  283.  
  284. Deering                                                         [Page 5]
  285.  
  286.  
  287.  
  288. RFC 988                                                        July 1986
  289. Host Extensions for IP Multicasting
  290.  
  291.  
  292.       prevent delivery to some members of a destination group.  Thus, a
  293.       large TTL value should be used to reach all members.  Conversely,
  294.       a small TTL value can be used to advantage to reach only "nearby"
  295.       members of a widely-dispersed group.  In clusters of low-delay
  296.       local area networks, the TTL field acts as a hop limit; thus, one
  297.       can perform expanding-ring searches by starting with a TTL of 1
  298.       and incrementing on each retransmission, up to some limit defined
  299.       by the diameter of the cluster.
  300.  
  301.    6.3. Extensions to the Local Network Service Interface
  302.  
  303.       No change to the local network service interface is required to
  304.       support the sending of multicast IP datagrams.  The IP module
  305.       merely specifies an IP host group destination, rather than an
  306.       individual IP destination, when it invokes the existing "Send
  307.       Local" operation.
  308.  
  309.    6.4. Extensions to an Ethernet Local Network Module
  310.  
  311.       The Ethernet directly supports the sending of local multicast
  312.       packets by allowing multicast addresses in the destination field
  313.       of Ethernet packets.  All that is needed to support the sending of
  314.       multicast IP datagrams is a procedure for mapping IP host group
  315.       addresses to Ethernet multicast addresses.
  316.  
  317.       An IP host group address is mapped to an Ethernet multicast
  318.       address by placing the low-order 28-bits of the IP address into
  319.       the low-order 28 bits of an Ethernet address.  The high-order 20
  320.       bits of the Ethernet address are set to a well-known value, to be
  321.       published in "Assigned Numbers".
  322.  
  323.       [At time of publication of this memo, a block of Ethernet
  324.       multicast addresses with 28 unspecified bits had not yet been
  325.       obtained from the allocating authority.  If such a block of
  326.       addresses cannot be obtained, an alternative mapping scheme will
  327.       be specified.]
  328.  
  329.    6.5. Extensions to Local Network Modules other than Ethernet
  330.  
  331.       Other networks that directly support multicasting, such as rings
  332.       or buses conforming to the IEEE 802.2 standard, can be handled the
  333.       same way as Ethernet for the purpose of sending multicast IP
  334.       datagrams.  For a network that supports broadcast but not
  335.       multicast, such as the Experimental Ethernet, all IP host group
  336.       addresses can be mapped to a single local broadcast address (at
  337.       the cost of increased overhead on all local hosts).  For a
  338.       point-to-point networks like the ARPANET or a public data network
  339.  
  340.  
  341. Deering                                                         [Page 6]
  342.  
  343.  
  344.  
  345. RFC 988                                                        July 1986
  346. Host Extensions for IP Multicasting
  347.  
  348.  
  349.       (X.25), all IP host group addresses might be mapped to the
  350.       well-known local address of an IP multicast agent; an agent on
  351.       such a network would take responsibility for completing multicast
  352.       delivery within the network as well as among networks.
  353.  
  354. 7.  RECEIVING MULTICAST IP DATAGRAMS
  355.  
  356.    7.1. Extensions to the IP Service Interface
  357.  
  358.       No change to the IP service interface is required to support the
  359.       reception of multicast IP datagrams.  Incoming multicast IP
  360.       datagrams are delivered to upper-layer protocol modules using the
  361.       same "Receive IP" operation as normal, unicast datagrams.
  362.  
  363.    7.2. Extensions to the IP Module
  364.  
  365.       To support the reception of multicast IP datagrams, the IP module
  366.       must be extended to recognize the addresses of IP host groups to
  367.       which the host currently belongs, in addition to the host's
  368.       individual IP address(es).  An incoming datagram destined to one
  369.       of those group addresses is processed exactly the same way as
  370.       datagrams destined to one of the host's individual addresses.
  371.       Incoming datagrams destined to groups to which the host does not
  372.       belong are discarded without generating any error report.
  373.  
  374.       On hosts attached to more than one network, if a datagram arrives
  375.       via one network interface, destined for a group to which the host
  376.       belongs only on a different interface, the datagram is quietly
  377.       discarded.  (This should occur only as a result of inadequate
  378.       multicast address filtering in the local network module.)
  379.  
  380.       An incoming datagram is not rejected for having an IP host group
  381.       address in its source address field or anywhere in a source
  382.       routing option.
  383.  
  384.       An ICMP error message (Destination Unreachable, Time Exceeded,
  385.       Parameter Problem, Source Quench, or Redirect) is never generated
  386.       in response to a datagram destined to an IP host group.
  387.  
  388.    7.3. Extensions to the Local Network Service Interface
  389.  
  390.       No change to the local network service interface is required to
  391.       support the reception of multicast IP datagrams.  Incoming local
  392.       network packets, whether multicast or unicast, are delivered to
  393.       the IP module using the same "Receive Local" operation.
  394.  
  395.  
  396.  
  397.  
  398. Deering                                                         [Page 7]
  399.  
  400.  
  401.  
  402. RFC 988                                                        July 1986
  403. Host Extensions for IP Multicasting
  404.  
  405.  
  406.    7.4. Extensions to an Ethernet Local Network Module
  407.  
  408.       To support the reception of multicast IP datagrams, an Ethernet
  409.       module must be able to receive packets addressed to the Ethernet
  410.       multicast addresses that correspond to the host's IP host group
  411.       addresses.  It is highly desirable to take advantage of any
  412.       address filtering capabilities that the Ethernet hardware
  413.       interface may have, so that the host only receives packets that
  414.       are destined to it.
  415.  
  416.       Unfortunately, many current Ethernet interfaces have a small limit
  417.       on the number of addresses that the hardware can be configured to
  418.       recognize.  However, an implementation must be capable of
  419.       listening on an arbitrary number of Ethernet multicast addresses,
  420.       which may mean "opening up" the address filter to accept all
  421.       multicast packets during those periods when the number of
  422.       addresses exceeds the limit of the filter.
  423.  
  424.       For interfaces with inadequate hardware address filtering, it may
  425.       be desirable (for performance reasons) to perform Ethernet address
  426.       filtering within the software of the Ethernet module.  This is not
  427.       mandatory, however, because the IP module performs its own
  428.       filtering based on IP destination addresses.
  429.  
  430.    7.5. Extensions to Local Network Modules other than Ethernet
  431.  
  432.       Other multicast networks, such as IEEE 802.2 networks, can be
  433.       handled the same way as Ethernet for the purpose of receiving
  434.       multicast IP datagrams.  For pure broadcast networks, such as the
  435.       Experimental Ethernet, all incoming broadcast packets can be
  436.       accepted and passed to the IP module for IP-level filtering.  On a
  437.       point-to-point network, multicast IP datagrams will arrive as
  438.       local network unicasts, so no change to the local network module
  439.       should be necessary.
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. Deering                                                         [Page 8]
  456.  
  457.  
  458.  
  459. RFC 988                                                        July 1986
  460. Host Extensions for IP Multicasting
  461.  
  462.  
  463. 8.  MANAGING GROUP MEMBERSHIP
  464.  
  465.    8.1. Extensions to the IP Service Interface
  466.  
  467.       To allow upper-layer protocol modules to request that their host
  468.       create, join, or leave a host group, the IP service interface must
  469.       be extended to offer the following three new operations:
  470.  
  471.          CreateGroup ( private, loopback )
  472.                                   --> outcome, group-address, access-key
  473.  
  474.       The CreateGroup operation requests the creation of a new,
  475.       transient host group, with this host as its only member.  The
  476.       "private" argument specifies if the group is to be private or
  477.       public.  The "loopback" argument specifies whether or not
  478.       datagrams sent from this host to the group should be delivered
  479.       locally as well as to other member hosts.  The "outcome" result
  480.       indicates whether the request is granted or denied.  If it is
  481.       granted, a new 32-bit IP host group address is returned, along
  482.       with a 64-bit access key which is zero for public groups and
  483.       non-zero for private groups.  The request may be denied due to
  484.       lack of response from a multicast agent, or lack of resources.
  485.  
  486.          JoinGroup ( group-address, access-key, loopback ) --> outcome
  487.  
  488.       The JoinGroup operation requests that this host become a member of
  489.       the host group identified by "group-address", with the specified
  490.       access key. The "loopback" argument specifies whether or not
  491.       datagrams sent from this host to the group should be delivered
  492.       locally as well as to other member hosts.  The "outcome" result
  493.       indicates whether the request is granted or denied.  The request
  494.       may be denied due to lack of response from a multicast agent, lack
  495.       of resources, an invalid group address, an incorrect access key,
  496.       or already being a member.
  497.  
  498.          LeaveGroup ( group-address, access-key ) --> outcome
  499.  
  500.       The LeaveGroup operation requests that this host give up its
  501.       membership in the host group identified by "group-address", with
  502.       the specified access key.  The "outcome" result indicates whether
  503.       the request is granted or denied.  The request may be denied due
  504.       to an invalid group address, an incorrect access key, or not
  505.       currently being a member.
  506.  
  507.       Each of these operations may take up to a minute or more to
  508.       complete, depending on the number of IGMP retransmissions
  509.  
  510.  
  511.  
  512. Deering                                                         [Page 9]
  513.  
  514.  
  515.  
  516. RFC 988                                                        July 1986
  517. Host Extensions for IP Multicasting
  518.  
  519.  
  520.       performed within the IP module, and time required for a multicast
  521.       agent to generate a reply. However, typical delays should be on
  522.       the order of a few seconds.
  523.  
  524.       Besides the LeaveGroup operation, a host loses its membership in a
  525.       group whenever the host or its IP module crashes, or, in rare
  526.       circumstances, when a multicast agent revokes its membership.  The
  527.       IP service interface should provide some means of informing an
  528.       upper-layer module when its membership has been revoked.
  529.       Membership may be revoked due to lack of resources, deallocation
  530.       of the group address, or the discovery of another host group using
  531.       the same group address with a different access key.  (See Appendix
  532.       II for discussion of address recycling issues.)
  533.  
  534.       It is important to observe that IP group membership is per-host,
  535.       rather than per-process.  An IP service interface should not allow
  536.       multiple processes to invoke JoinGroup operations for the same
  537.       group as a way of achieving delivery to more than process.  The IP
  538.       module delivers each incoming datagram, whether multicast or
  539.       unicast, to the single upper-layer protocol module identified by
  540.       the protocol field in the datagram's IP header; it is an
  541.       upper-layer issue whether or not to deliver incoming datagrams to
  542.       more than one process, perhaps using the concept of "process
  543.       groups" or "shared ports".
  544.  
  545.    8.2. Extensions to the IP Module
  546.  
  547.       Within the IP module, the membership management operations are
  548.       supported by the Internet Group Management Protocol (IGMP),
  549.       specified in Appendix I. As well as having messages corresponding
  550.       to each of the operations specified above, IGMP also specifies a
  551.       "deadman timer" procedure whereby hosts periodically confirm their
  552.       memberships with the multicast agents.
  553.  
  554.       The IP module must maintain a data structure listing the IP
  555.       addresses of all host groups to which the host currently belongs,
  556.       along with each group's loopback policy, access key, and timer
  557.       variables.  This data structure is used by the IP multicast
  558.       transmission service to know which outgoing datagrams to loop
  559.       back, and by the reception service to know which incoming
  560.       datagrams to accept.  The purpose of IGMP and the management
  561.       interface operations is to maintain this data structure.
  562.  
  563.       On hosts attached to more than one network, each membership is
  564.       associated with a particular network interface.  On such a host
  565.       the management interface operations above may each require an
  566.       additional parameter specifying to which interface the create,
  567.  
  568.  
  569. Deering                                                        [Page 10]
  570.  
  571.  
  572.  
  573. RFC 988                                                        July 1986
  574. Host Extensions for IP Multicasting
  575.  
  576.  
  577.       join, or leave request applies.  The group membership data
  578.       structure must also be extended to associate an interface with
  579.       each membership.  If a host joins the same host group on more than
  580.       one network interface, it can expect to receive multiple copies of
  581.       each datagram sent to that group.
  582.  
  583.    8.3. Extensions to the Local Network Service Interface
  584.  
  585.       To allow an IP module to control what packets should be accepted
  586.       by the local network module, it is necessary to extend the local
  587.       network service interface with the following two new operations:
  588.  
  589.          AcceptAddress ( group-address )
  590.  
  591.          RejectAddress ( group-address )
  592.  
  593.       where "group-address" is an IP host group address.  The
  594.       AcceptAddress operation requests the local network module to
  595.       accept and deliver up subsequently arriving packets destined to
  596.       the local network address corresponding to "group-address".  The
  597.       RejectAddress operation requests the local network module to stop
  598.       delivering up packets destined to the local network address
  599.       corresponding to "group-address".
  600.  
  601.       Any local network module is free to ignore RejectAddress requests,
  602.       and may deliver up packets destined to more addresses than just
  603.       those specified in AcceptAddress requests, if it is unable to
  604.       filter incoming packets adequately.
  605.  
  606.    8.4. Extensions to an Ethernet Local Network Module
  607.  
  608.       An Ethernet module responds to AcceptAddress operations by adding
  609.       the corresponding Ethernet multicast address to its acceptance
  610.       filter for incoming packets.  A RejectAddress operation causes the
  611.       corresponding Ethernet address to be dropped from the filter.  For
  612.       Ethernet interfaces with a limit on the number of addresses that
  613.       can be added to the filter, the Ethernet software module must
  614.       detect when that threshold is exceeded and open up the filter to
  615.       accept all multicast packets.  It should also detect when the
  616.       number of addresses drops below the threshold and revert to
  617.       individual address filtering.
  618.  
  619.    8.5. Extensions to Local Network Modules other than Ethernet
  620.  
  621.       Other multicast networks, such as IEEE 802.2 networks, can be
  622.       handled the same way as Ethernet for the purpose of controlling
  623.       address filtering.  For a pure broadcast network or a
  624.  
  625.  
  626. Deering                                                        [Page 11]
  627.  
  628.  
  629.  
  630. RFC 988                                                        July 1986
  631. Host Extensions for IP Multicasting
  632.  
  633.  
  634.       point-to-point network, the AcceptAddress and RejectAddress
  635.       operations may have no effect; all incoming packets could be
  636.       passed to the IP module for IP-level filtering.
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683. Deering                                                        [Page 12]
  684.  
  685.  
  686.  
  687. RFC 988                                                        July 1986
  688. Host Extensions for IP Multicasting
  689.  
  690.  
  691. APPENDIX I.  INTERNET GROUP MANAGEMENT PROTOCOL (IGMP)
  692.  
  693.    The Internet Group Management Protocol (IGMP) is used between IP
  694.    hosts and their immediate neighbor multicast agents to support the
  695.    creation of transient groups, the addition and deletion of members of
  696.    a group, and the periodic confirmation of group membership.  IGMP is
  697.    an asymmetric protocol and is specified here from the point of view
  698.    of a host, rather than a multicast agent.
  699.  
  700.    Like ICMP, IGMP is a integral part of IP.  It is required to be
  701.    implemented in full by all hosts conforming to level 2 of the IP
  702.    multicasting specification.  IGMP messages are encapsulated in IP
  703.    datagrams, with an IP protocol number of 2.  All IGMP messages have
  704.    the following format:
  705.  
  706.     0                   1                   2                   3    
  707.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
  708.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  709.    |     Type      |     Code      |           Checksum            | 
  710.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  711.    |                          Identifier                           | 
  712.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  713.    |                         Group Address                         | 
  714.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  715.    |                                                               | 
  716.    +                         Access Key                            + 
  717.    |                                                               | 
  718.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  719.  
  720.    Type
  721.  
  722.       There are eight types of IGMP message:
  723.  
  724.          1 = Create Group Request
  725.          2 = Create Group Reply
  726.  
  727.          3 = Join Group Request
  728.          4 = Join Group Reply
  729.  
  730.          5 = Leave Group Request
  731.          6 = Leave Group Reply
  732.  
  733.          7 = Confirm Group Request
  734.          8 = Confirm Group Reply
  735.  
  736.  
  737.  
  738.  
  739.  
  740. Deering                                                        [Page 13]
  741.  
  742.  
  743.  
  744. RFC 988                                                        July 1986
  745. Host Extensions for IP Multicasting
  746.  
  747.  
  748.    Code
  749.  
  750.       In a Create Group Request message, the code field indicates if the
  751.       new host group is to be public or private:
  752.  
  753.          0 = public
  754.          1 = private
  755.  
  756.       In all other Request messages, the code field contains zero.
  757.  
  758.       In a Reply message, the Code field specifies the outcome of the
  759.       request:
  760.  
  761.          0       = request granted
  762.          1       = request denied,  no resources
  763.          2       = request denied,  invalid code
  764.          3       = request denied,  invalid group address
  765.          4       = request denied,  invalid access key
  766.          5 - 255 = request pending, retry in this many seconds
  767.  
  768.    Checksum
  769.  
  770.       The checksum is the 16-bit one's complement of the one's
  771.       complement sum of the IGMP message starting with the IGMP Type.
  772.       For computing the checksum, the checksum field should be zero.
  773.  
  774.    Identifier
  775.  
  776.       In a Confirm Group Request message, the identifier field contains
  777.       zero.
  778.  
  779.       In all other Request messages, the identifier field contains a
  780.       value to distinguish the request from other requests by the same
  781.       host.
  782.  
  783.       In a Reply message, the identifier field contains the same value
  784.       as in the corresponding Request message.
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797. Deering                                                        [Page 14]
  798.  
  799.  
  800.  
  801. RFC 988                                                        July 1986
  802. Host Extensions for IP Multicasting
  803.  
  804.  
  805.    Group Address
  806.  
  807.       In a Create Group Request message, the group address field
  808.       contains zero.
  809.  
  810.       In all other Request messages, the group address field contains a
  811.       host group address.
  812.  
  813.       In a Create Group Reply message, the group address field contains
  814.       either a newly allocated host group address (if the request is
  815.       granted) or zero (if denied).
  816.  
  817.       In all other Reply messages, the group address field contains the
  818.       same host group address as in the corresponding Request message.
  819.  
  820.    Access Key
  821.  
  822.       In a Create Group Request message, the access key field contains
  823.       zero.
  824.  
  825.       In all other Request messages, the access key field contains the
  826.       access key assigned to the host group identified in the Group
  827.       Address field (zero for public groups).
  828.  
  829.       In a Create Group Reply message, the access key field contains
  830.       either a non-zero 64-bit number (if the request for a private
  831.       group is granted) or zero.
  832.  
  833.       In all other Reply messages, the access key field contains the
  834.       same access key as in the corresponding Request.
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854. Deering                                                        [Page 15]
  855.  
  856.  
  857.  
  858. RFC 988                                                        July 1986
  859. Host Extensions for IP Multicasting
  860.  
  861.  
  862.    Protocol Rules
  863.  
  864.       Request messages are sent only by hosts.  Reply messages are sent
  865.       only by multicast agents.  If a host receives an IGMP message of a
  866.       type other than the four Reply types specified above, the message
  867.       is discarded.
  868.  
  869.       A Request message is sent with its IP destination field containing
  870.       the well-known address of the Multicast Agent Group.  The IP
  871.       time-to-live field is initialized by the sender to 1, in order to
  872.       limit the scope of the request to immediate neighbor multicast
  873.       agents only.  The IP source address field contains the individual
  874.       IP address of the sending host.
  875.  
  876.       A Reply message is sent only in response to a Request message.
  877.       Its IP destination address field contains the individual address
  878.       of the host that sent the corresponding Request.  (A Confirm Group
  879.       Reply may also be sent to the host group address specified in its
  880.       corresponding Confirm Group Request.)  The IP source address field
  881.       contains the individual IP address of the replying multicast
  882.       agent.
  883.  
  884.       When a host sends a new Create Group, Join Group, or Leave Group
  885.       Request message, it supplies an arbitrary identifier that it has
  886.       not used within the last T0 seconds.  (It is usually sufficient
  887.       just to increment the identifier for each new request.)  The host
  888.       initializes a timer to T1 seconds and a retransmission counter to
  889.       zero.  If a Reply message with a matching identifier is not
  890.       received before the timer expires, it is reset to T1 seconds and
  891.       the retransmission counter is incremented.  If the counter is less
  892.       than N1, the host retransmits the Request message with the same
  893.       identifier.  If the counter equals N1, the host gives up; if the
  894.       request was to create or join a group, it is deemed to have
  895.       failed; if the request was to leave a group, it is deemed to have
  896.       succeeded.
  897.  
  898.       If a "request pending" code is received in a matching reply to a
  899.       Create Group, Join Group, or Leave Group Request, the timer is
  900.       reset to the number of seconds specified by the code and the
  901.       retransmission counter is reset to zero.  The new timer value
  902.       applies to one timeout interval only -- if the timer expires, it
  903.       is reset to T1 seconds, the counter is incremented, and the
  904.       request is retransmitted.
  905.  
  906.       The first matching Reply to a Create Group, Join Group, or Leave
  907.       Group Request containing a "request granted" or "request denied"
  908.       code determines the outcome of the request.  Any subsequent or
  909.  
  910.  
  911. Deering                                                        [Page 16]
  912.  
  913.  
  914.  
  915. RFC 988                                                        July 1986
  916. Host Extensions for IP Multicasting
  917.  
  918.  
  919.       non-matching Replies are discarded by the host.  However, if a
  920.       host receives an affirmative Create Group Reply or Join Group
  921.       Reply that neither matches an outstanding Request nor contains the
  922.       address of a group to which the host belongs, the host should
  923.       immediately send a Leave Group Request for the unexpected group
  924.       address.
  925.  
  926.       A "request granted" reply to a Create Group Request implies that,
  927.       as well as the group being created, the requesting host is granted
  928.       membership in the group, i.e. there is no need to send a separate
  929.       Join Group Request.
  930.  
  931.       Confirm Group Request messages must be sent periodically by hosts
  932.       to inform the neighboring multicast agent(s) of the hosts'
  933.       continuing membership in the specified groups.  If an agent does
  934.       not receive a Confirm Group Request message for a particular group
  935.       within an agent-defined interval, it stops delivering datagrams
  936.       destined to that group.
  937.  
  938.       For each group to which it belongs, a host maintains a
  939.       confirmation timer and a variable t.  The variable t is
  940.       initialized to T2 seconds. Whenever the host's request to create
  941.       or join a group is granted, and whenever the host either sends a
  942.       Confirm Group Request or receives a Confirm Group Reply with a
  943.       "request granted" code for the group, the host sets the group's
  944.       timer to a random number uniformly distributed between t and t +
  945.       T3 seconds.  If the host receives a a Confirm Group Reply with a
  946.       "request pending" code, t is changed to the value of the code and
  947.       the timer is reset to a random number between the new t and t +
  948.       T3.  The variable t retains its value until another "request
  949.       pending" code is received.  Whenever the timer expires, the host
  950.       sends a Confirm Group Request.
  951.  
  952.       Even if a host fails to receive Confirm Group Replies to its
  953.       Requests, it continues to consider itself a member of the group,
  954.       because it may still be able to receive multicast datagrams from
  955.       other hosts on the same local network.  Only if a host receives a
  956.       "request denied" code in a Confirm Group Reply does it stop
  957.       sending Confirm Group Requests and consider its membership to be
  958.       revoked.
  959.  
  960.       Multicast agents respond to Confirm Group Request messages by
  961.       sending Confirm Group Reply messages either to the individual
  962.       sender of the Request or to the host group address specified in
  963.       the Request.  By sending back a Confirm Group Reply to all
  964.       neighboring members of a group, a multicast agent is able to reset
  965.       every member's timer with a single packet.  The randomization of
  966.  
  967.  
  968. Deering                                                        [Page 17]
  969.  
  970.  
  971.  
  972. RFC 988                                                        July 1986
  973. Host Extensions for IP Multicasting
  974.  
  975.  
  976.       the timers is intended to cause only the one member whose timer
  977.       expires first to send a Confirm Group Request, stimulating a Reply
  978.       to reset all the timers.  The use of the "request pending" codes
  979.       allows the multicast agent to control the rate at which it
  980.       receives Confirm Group Requests.
  981.  
  982.    Protocol Timing Constants
  983.  
  984.       The following timing constants are specified for IGMP.  They are
  985.       subject to change as a result of operational experience.
  986.  
  987.       T0 = 300 seconds  minimum recycle time for identifiers
  988.  
  989.       T1 = 2 seconds    retrans. interval for Create/Join/Leave Requests
  990.  
  991.       N1 = 5 tries      retrans. limit for Create/Join/Leave Requests
  992.  
  993.       T2 = 15 seconds   initial value for Confirm Request variable t
  994.  
  995.       T3 = 15 seconds   random range for Confirm Request variable t
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025. Deering                                                        [Page 18]
  1026.  
  1027.  
  1028.  
  1029. RFC 988                                                        July 1986
  1030. Host Extensions for IP Multicasting
  1031.  
  1032.  
  1033. APPENDIX II.  HOST GROUP ADDRESS ISSUES
  1034.  
  1035.    This appendix is not part of the IP multicasting specification, but
  1036.    provides background discussion of several issues related to IP host
  1037.    group addresses.
  1038.  
  1039.    Group Address Binding
  1040.  
  1041.       The binding of IP host group addresses to physical hosts may be
  1042.       considered a generalization of the binding of IP unicast
  1043.       addresses.  An IP unicast address is statically bound to a single
  1044.       local network interface on a single IP network.  An IP host group
  1045.       address is dynamically bound to a set of local network interfaces
  1046.       on a set of IP networks.
  1047.  
  1048.       It is important to understand that an IP host group address is NOT
  1049.       bound to a set of IP unicast addresses.  The multicast agents do
  1050.       not need to maintain a list of individual members of each host
  1051.       group.  For example, a multicast agent attached to an Ethernet
  1052.       need associate only a single Ethernet multicast address with each
  1053.       host group having local members, rather than a list of the
  1054.       members' individual IP or Ethernet addresses.
  1055.  
  1056.    Group Addresses as Logical Addresses
  1057.  
  1058.       Host group addresses have been defined specifically for use in the
  1059.       destination address field of multicast IP datagrams.  However, the
  1060.       fact that group addresses are location-independent (they are not
  1061.       statically bound to a single network interface) suggests possible
  1062.       uses as more general "logical addresses", both in the source as
  1063.       well as the destination address field of datagrams.  For example,
  1064.       a mobile IP host might have a host group address as its only
  1065.       identity, used as the source of datagrams it sends.  Whenever the
  1066.       mobile host moved from one network to another, it would join its
  1067.       own group on the new network and depart from the group on the old
  1068.       network.  Other hosts communicating with the mobile one would deal
  1069.       only with the group address and would be unaware of, and
  1070.       unaffected by, the changing network location of the mobile host.
  1071.  
  1072.       Host group addresses cannot, however, be used to solve all
  1073.       problems of internetwork logical addressing, such as delivery to
  1074.       the "nearest" or the "least loaded" network interface of a
  1075.       multi-homed host. Furthermore, there are hazards in using group
  1076.       addresses in the source address field of datagrams when the group
  1077.       actually contains more than one host.  For instance, the IP
  1078.       datagram reassembly algorithm relies on every host using a
  1079.       different source address.  Also, errors in a datagram sent with a
  1080.  
  1081.  
  1082. Deering                                                        [Page 19]
  1083.  
  1084.  
  1085.  
  1086. RFC 988                                                        July 1986
  1087. Host Extensions for IP Multicasting
  1088.  
  1089.  
  1090.       group source address may result in error reports being returned to
  1091.       all members of the group, not just the sender.  In view of these
  1092.       hazards, this memo specifies the use of host group addresses only
  1093.       as destinations of datagrams, either in the destination address
  1094.       field or as the last element of a source routing option.  However,
  1095.       it is recommended that datagrams with a group source address be
  1096.       accepted without complaint, thereby allowing other implementations
  1097.       to experiment with logical addressing applications of host group
  1098.       addresses.
  1099.  
  1100.    Recycling of Transient Host Group Addresses
  1101.  
  1102.       Since host group addresses are of fixed, relatively small size,
  1103.       transient group addresses must be recycled to satisfy continuing
  1104.       requests for creation of new groups.  The multicast agents make an
  1105.       effort to ensure that a group has no members anywhere in the
  1106.       internet before allocating its address to a new group.  However,
  1107.       under certain conditions of internetwork partitioning and
  1108.       membership migration, it is impossible to guarantee unique
  1109.       allocation of an address without seriously compromising the
  1110.       availability and robustness of host groups. Furthermore, hosts
  1111.       that are unaware that a particular group has ceased to exist may
  1112.       send datagrams to it long after its address has been assigned to a
  1113.       new group.  Therefore, hosts should be prepared for the
  1114.       possibility of misdelivery of multicast IP datagrams to unintended
  1115.       hosts, even in private groups.  Such misdelivery can only be
  1116.       detected at a level above IP, using higher-level identifiers or
  1117.       authentication tokens.  (The access key of a private group might
  1118.       be used in some applications as such an identifier.)  Of course,
  1119.       there are other threats to privacy of communication in the
  1120.       internet, besides group address collision, such as untrustworthy
  1121.       gateways or unsecured networks. End-to-end encryption is an
  1122.       effective defense against such threats.
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139. Deering                                                        [Page 20]
  1140.  
  1141.